/* 
1 输入框绑定 值改变事件 input事件
  1 获取到输入框的值
  2 合法性判断 
  3 检验通过 把输入框的值 发送到后台
  4 返回的数据打印到页面上
2 防抖 （防止抖动） 定时器  节流 
  0 防抖 一般 输入框中 防止重复输入 重复发送请求
  1 节流 一般是用在页面下拉和上拉 
  1 定义全局的定时器id
 */

/*
  参数请求：import { request } from "../../request/index";
  导入解决报错的包：import regeneratorRuntime from '../../lib/runtime/runtime';
*/
import { request } from "../../request/index";
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    goods:[],
    // 取消 按钮 是否显示
    isFocus:false,
    // 输入框的值
    inpValue: ""
  },
  TimeId: -1,
  // 输入框的值改变就会触发的事件
  handleInput(e){
    // 1 获取输入框的值
    const {value} = e.detail;
    // 2 检测合法性     value.trim()去除两边的空格
     // 清除定时器
     clearTimeout(this.TimeId);
    if(!value.trim()){
      // 值不合法
      // 清空数据并隐藏取消按钮
      this.setData({
        goods:[],
        isFocus: false
      })
      return;
    }
    // 3 准备发送请求获取数据
    this.setData({
      isFocus: true
    })
   
    // 开启定时器，延迟1秒发送请求，防止重复发送请求
    this.TimeId=setTimeout(()=>{
      this.qsearch(value);
    },1000);
    
  },
  // 发送请求获取搜索建议数据
  async qsearch(query){
    const res = await request({url:"/goods/search",data:{query}});
    // console.log(res);
    this.setData({
      goods: res.goods
    });
  },
  // 点击取消按钮
  handleCancel(){
    // 清空数据
    this.setData({
      inpValue:"",
      isFocus: false,
      goods:[]
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    
  }
})